package cn.edu.wynu.d3_inner_class3;
/*
匿名内部类
就是一种特殊的局部内部类;所谓匿名:指的是程序员不需要为这个类声明名字。
new 类或接口(参数值...){
    类体(一般是方法重写);
};

new Animal(){
    @0verride
    public void eat(){
    }
};
特点:匿名内部类本质就是一个子类，并会立即创建出一个子类对象。
作用:用于更方便的创建一个子类对象。
*/

public class Test {
    public static void main(String[] args) {
        // 认识匿名内部类，并掌握其作用
//        Animal a = new Cat();
//        a.eat();

        // 匿名内部类
        // 1、把这个匿名内部类编译成一个子类，然后会立即创建一个子类对象出来
        Animal a = new Animal() {
            @Override
            public void eat() {
                System.out.println("猫吃鱼");
            }
        };
        a.eat();
    }
}

/*
class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}
*/

abstract class Animal{
    public abstract void eat();
}